import time

'''
1.----歌手大赛----
为丰富校园文化生活，学校拟组织一场歌手大赛，从参赛选手中选拔出10名相对突出的学生，授予“校园十大歌手”称号。
比赛设有评委组，每名选手演唱完毕后会由评委组的10名评委打分。
为保证比赛公平公正、防止作弊和恶意打分，计算得分（即打分的平均分）时会先去掉最高分和最低分。
本案例要求编写程序，实现根据需求计算每位选手得分的功能。'''
# (1)
score_list=[]
for i in range(10):
    score_list.append(int(input(f"请第{i+1}位输入分数：")))
score_list.remove(max(score_list))
score_list.remove(min(score_list))
print("得分：",sum((score_list))/len(score_list))
# (2)
score_list=[]
for i in range(10):
    score_list.append(int(input(f"请第{i+1}位输入分数：")))
score_list.sort()
print(score_list)
score_list.pop(0)
score_list.pop(-1)
print(score_list)
print("得分：",sum((score_list))/len(score_list))


'''
2.----登录函数----
编写一个用户登录逻辑，用户名密码提前设置（列表嵌套字典存储），返回用户登录成功或者失败的结果。'''
user1={"username":"test1","password":"123456"}
user2={"username":"test2","password":"123456"}
user3={"username":"test3","password":"123456"}
user4={"username":"test4","password":"123456"}
user5={"username":"test5","password":"123456"}
user_list=[user1,user2,user3,user4,user5]
unm=input("请输入用户名：")
pwd=input("请输入密码：")
tag=0
for user in user_list:
    if unm ==user.get('username') and pwd== user.get("password"):
        tag=1
        break
if tag==1:
    print("登录成功")
else:
    print("登录失败")



'''
3.排序算法：冒泡排序法'''
number_list=[]
count=0
judge=" "
while True:
    count+=1
    number_list.append(int(input(f"请输入第{count}位数字：")))
    if count>1:
        judge = input("继续输入请按空格\n退出请按任意键\n:")
    if judge==" ":
        continue
    else:
        break
print(f"未排序的序列：{number_list}")
for i in range(len(number_list)-1):
    for j in range(len(number_list)-1-i):
        if number_list[j]>number_list[j+1]:
            tamp=number_list[j]
            number_list[j]=number_list[j+1]
            number_list[j+1]=tamp
print("排序后的序列：{0}".format(number_list))


'''
4.----银行ATM----
银行ATM存款取款：
1.模拟3张银行卡,1001,1002,1003,分别设置密码和余额(使用列表嵌套字典的方式)；
2.提示用户输入银行卡和密码，遍历每张卡的信息验证是否成功；
3.如果用户输入正确---提示让用户选择取款.存款还是退出,并提示余额多少.  输入错误---重新输入卡号密码；
  选择取款---提示输入取款额度,如果超过余额,提示余额不足;否则,在余额上减掉相应金额；
  选择存款---输入存款额度,余额加上相应额度,并提示余额多少；
  选择退出---重新登录；
4.连续3次输入错误账号密码,提示银行卡已被锁定，程序结束。'''

# （1）数据准备
bank_card1 = {"card_id": "1001", "password": "123456", "balance": 1000001}
bank_card2 = {"card_id": "1002", "password": "123456", "balance": 1000002}
bank_card3 = {"card_id": "1003", "password": "123456", "balance": 1000003}
bank_cards = [bank_card1, bank_card2, bank_card3]
tag = 0
count = 0
enter_bank_card = {}
while True:
    enter_id = input("请输入银行卡号：")
    enter_pwd = input("请输入密码：")
    # （2）遍历验证
    for bank_card in bank_cards:
        if enter_id == bank_card["card_id"] and enter_pwd == bank_card["password"]:
            enter_bank_card = bank_card
            tag = 1

            break
    # （3）验证后操作
    if tag == 1:
        # (4)登录后操作
        while True:
            print(f"账户余额：{enter_bank_card['balance']}")
            print("选项1：选择取款\n选项2：选择存款\n选项3：选择退出")
            option = input("请输入操作序号：")
            if option == "1":
                #   选择取款---提示输入取款额度,如果超过余额,提示余额不足;否则,在余额上减掉相应金额
                print(f"可提取额度：{enter_bank_card['balance']}")
                withdrawal = float(input("请输入取款金额："))
                if withdrawal > enter_bank_card['balance']:
                    print("余额不足！")
                else:
                    afer_balance = enter_bank_card['balance'] - withdrawal
                    enter_bank_card.update(balance=afer_balance)
                    print("取款成功！")
                    time.sleep(1)
            elif option == "2":
                deposit = float(input("请输入存款金额："))
                afer_balance = enter_bank_card['balance'] + deposit
                enter_bank_card.update(balance=afer_balance)
                print("存款成功！")
                time.sleep(1)
            elif option == "3":
                tag=0
                print("退出成功！！")
                break
            else:
                print("序号输入错误!请重新输入")

    else:
        count += 1
        if count < 3:
            print("输入错误....\n重新输入卡号密码")
            continue
        else:
            print("对不起，银行卡已被锁定！请24小时后再执行")
            time.sleep(86400)



'''
5.----商超管理系统（容器版）----
项目需求：
系统需要用户先登录，再进行操作，其中包含一下功能菜单：
1.显示商品列表
2.增加商品
3.删除商品
4.设置折扣
5.修改价格
6.按价格排序（升序、降序
7.退出
  a.	使用列表嵌套字典的方式保存用户数据（包含用户名，密码，姓名）；
  b.	使用列表嵌套字典的方式保存商品数据（包含编号，名称，价格，折扣）；
  c.	编写用户登录的函数，返回登录结果；
  d.	循环提示菜单，业务完毕时返回主菜单，退出时回到登陆页面；
  e.	将功能菜单中的业务功能各自编写到函数中；
  f.	用户选择不同业务编号时，调用已经写好的各种函数。
'''

# 用户数据
information1={"username":"admin","password":"123","name":"管理员"}
information2={"username":"Monica","password":"123456","name":"莫尼卡"}
information3={"username":"Kelly","password":"123456","name":"凯利"}
information4={"username":"Laura","password":"123456","name":"劳拉"}
information5={"username":"Irene","password":"123456","name":"艾琳"}
information6={"username":"Alice","password":"123456","name":"艾丽丝"}
# 商品数据
goods1={"No":"1","goods_name":"牙膏","price":8.0,"discount":8.7}
goods2={"No":"2","goods_name":"水杯","price":3.0,"discount":9.7}
goods3={"No":"3","goods_name":"毛巾","price":10.0,"discount":7.9}
goods4={"No":"4","goods_name":"牙刷","price":8.0,"discount":9.7}
goods5={"No":"5","goods_name":"纸巾","price":20.0,"discount":8.7}
# 初始化变量
informations_list=[information1,information2,information3,information4,information5]
goods_list=[goods1,goods2,goods3,goods4,goods5]
operations={1:"显示商品列表",2:"增加商品",3:"删除商品",4:"设置折扣",5:"修改价格",6:"按价格排序（升序、降序）",7:"退出"}
tag=0
del_tag=0
user_information={}
while True:
    # 输入用户名密码
    username=input("用户名：")
    pwd=input("密码：")
    # 验证
    for information in informations_list:
        if username==information.get("username") and pwd==information.get("password"):
            user_information=information
            tag=1
            break
    if tag==1:
    # 登录成功
        while True:
            print("系统首页".center(30, '='))  # 显示系统首页
            # 显示操作菜单
            print("操作选项：")
            for key, value in operations.items():
                print(f'{key}：{value}')
            option=input("请输入选项序号：")
            if option=="1":
                # 显示商品列表
                print("商品列表：")
                print("编号   名称   价格   折扣")
                for goods in goods_list:
                    print(tuple(goods.values()))
                time.sleep(1)
            elif option == "2":
                add_goods={}
                goods1={"No":"1","goods_name":"牙膏","price":8.0,"discount":8.7}
                add_goods.update(No=str(len(goods_list)+1))
                add_goods.update(goods_name=input("请输入增加商品的名称："))
                add_goods.update(price=float(input("请输入增加商品的价格：")))
                add_goods.update(discount=float(input("请输入增加商品的折扣：")))
                goods_list.append(add_goods)
                print("商品新增成功！！！")
            elif option == "3":
                del_goods_No=input("请输入要删除商品的编号")
                for del_goods in goods_list:
                    if del_goods_No== del_goods["No"]:
                        del_tag=1
                        no=int(del_goods_No)
                        goods_list.pop(no-1)
                        break
                if del_tag==1:
                    print("删除成功！！！")
                    del_tag=0
                else:
                    print("输入的编号不存在，请重新操作！！！")
            elif option == "4":
                discount_goods_No = input("请输入设置折扣的商品编号：")
                for discount_goods in goods_list:
                    if discount_goods_No == discount_goods["No"]:
                        discount_tag = 1
                        discount_goods["discount"] = float(input("请输入折扣："))
                        break
                if discount_tag == 1:
                    print("折扣设置成功！！！")
                    discount_tag = 0
                else:
                    print("输入的编号不存在，请重新操作！！！")
            elif option == "5":
                price_goods_No = input("请输入修改价格的商品编号：")
                for price_goods in goods_list:
                    if price_goods_No == price_goods["No"]:
                        price_tag = 1
                        price_goods["price"] = float(input("请输入修改后的价格："))
                        break
                if price_tag == 1:
                    print("价格修改成功！！！")
                    price_tag = 0
                else:
                    print("输入的编号不存在，请重新操作！！！")
            elif option == "6":
                for i in range(len(goods_list) - 1):
                    for j in range(len(goods_list) - 1 - i):
                        if goods_list[j].get("price") > goods_list[j + 1].get("price"):
                            tamp = goods_list[j]
                            goods_list[j] = goods_list[j + 1]
                            goods_list[j + 1] = tamp
                sort_option=input("请输入按价格排序方式（1-升序，任意键-降序）：")
                if sort_option=="1":
                    continue
                else:
                    goods_list.reverse()
            elif option == "7":
                tag=0
                print("退出成功！！！")
                break
            else:
                print("操作选项序号输入错误，请重新输入！")
                continue



    else:
    # 登录失败
        print("登录失败")



